<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>
<title>README</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
body { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
@media screen and (max-width: 500px) {
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
  .CodeMirror-sizer { margin-left: 0px !important; }
  .CodeMirror-gutters { display: none !important; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 2; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px !important; }
tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; }
  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  html.blink-to-pdf { font-size: 13px; }
  .typora-export #write { padding-left: 32px; padding-right: 32px; padding-bottom: 0px; break-after: avoid; }
  .typora-export #write::after { height: 0px; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.md-inline-math .MathJax_SVG .noError { display: none !important; }
.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }
.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }
.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }
.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }
.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }
.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }
.MathJax_SVG * { transition: none 0s ease 0s; }
.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
svg[id^="mermaidChart"] { line-height: 1em; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
mark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }


.CodeMirror { height: auto; }
.CodeMirror.cm-s-inner { background: inherit; }
.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }
.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }
.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }
.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }
.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }
.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }
.cm-s-inner .cm-number { color: rgb(17, 102, 68); }
.cm-s-inner .cm-def { color: rgb(0, 0, 255); }
.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }
.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }
.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }
.cm-s-inner .cm-string { color: rgb(170, 17, 17); }
.cm-s-inner .cm-property { color: rgb(0, 0, 0); }
.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }
.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }
.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }
.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }
.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }
.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }
.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }
.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }
.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }
.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }
.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }
.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }
.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }
.cm-negative { color: rgb(221, 68, 68); }
.cm-positive { color: rgb(34, 153, 34); }
.cm-header, .cm-strong { font-weight: 700; }
.cm-del { text-decoration: line-through; }
.cm-em { font-style: italic; }
.cm-link { text-decoration: underline; }
.cm-error { color: red; }
.cm-invalidchar { color: red; }
.cm-constant { color: rgb(38, 139, 210); }
.cm-defined { color: rgb(181, 137, 0); }
div.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }
div.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }
.cm-s-inner .CodeMirror-activeline-background { background: inherit; }
.CodeMirror { position: relative; overflow: hidden; }
.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }
.CodeMirror-sizer { position: relative; }
.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; }
.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }
.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; }
.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }
.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }
.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; }
.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }
.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }
.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }
.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }
.CodeMirror-lines { cursor: text; }
.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }
.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }
.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }
.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }
.CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; }
.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }
.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }
.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }
.CodeMirror-measure pre { position: static; }
.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }
.CodeMirror div.CodeMirror-cursor { visibility: hidden; }
.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }
.cm-searching { background: rgba(255, 255, 0, 0.4); }
@media print {
  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }
}


:root {
    --side-bar-bg-color: #fafafa;
    --control-text-color: #777;
}

@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);

html {
    font-size: 16px;
}

body {
    font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
    color: rgb(51, 51, 51);
    line-height: 1.6;
}

#write {
    max-width: 860px;
  	margin: 0 auto;
  	padding: 30px;
    padding-bottom: 100px;
}
#write > ul:first-child,
#write > ol:first-child{
    margin-top: 30px;
}

a {
    color: #4183C4;
}
h1,
h2,
h3,
h4,
h5,
h6 {
    position: relative;
    margin-top: 1rem;
    margin-bottom: 1rem;
    font-weight: bold;
    line-height: 1.4;
    cursor: text;
}
h1:hover a.anchor,
h2:hover a.anchor,
h3:hover a.anchor,
h4:hover a.anchor,
h5:hover a.anchor,
h6:hover a.anchor {
    text-decoration: none;
}
h1 tt,
h1 code {
    font-size: inherit;
}
h2 tt,
h2 code {
    font-size: inherit;
}
h3 tt,
h3 code {
    font-size: inherit;
}
h4 tt,
h4 code {
    font-size: inherit;
}
h5 tt,
h5 code {
    font-size: inherit;
}
h6 tt,
h6 code {
    font-size: inherit;
}
h1 {
    padding-bottom: .3em;
    font-size: 2.25em;
    line-height: 1.2;
    border-bottom: 1px solid #eee;
}
h2 {
   padding-bottom: .3em;
    font-size: 1.75em;
    line-height: 1.225;
    border-bottom: 1px solid #eee;
}
h3 {
    font-size: 1.5em;
    line-height: 1.43;
}
h4 {
    font-size: 1.25em;
}
h5 {
    font-size: 1em;
}
h6 {
   font-size: 1em;
    color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table{
    margin: 0.8em 0;
}
li>ol,
li>ul {
    margin: 0 0;
}
hr {
    height: 2px;
    padding: 0;
    margin: 16px 0;
    background-color: #e7e7e7;
    border: 0 none;
    overflow: hidden;
    box-sizing: content-box;
}

li p.first {
    display: inline-block;
}
ul,
ol {
    padding-left: 30px;
}
ul:first-child,
ol:first-child {
    margin-top: 0;
}
ul:last-child,
ol:last-child {
    margin-bottom: 0;
}
blockquote {
    border-left: 4px solid #dfe2e5;
    padding: 0 15px;
    color: #777777;
}
blockquote blockquote {
    padding-right: 0;
}
table {
    padding: 0;
    word-break: initial;
}
table tr {
    border-top: 1px solid #dfe2e5;
    margin: 0;
    padding: 0;
}
table tr:nth-child(2n),
thead {
    background-color: #f8f8f8;
}
table tr th {
    font-weight: bold;
    border: 1px solid #dfe2e5;
    border-bottom: 0;
    margin: 0;
    padding: 6px 13px;
}
table tr td {
    border: 1px solid #dfe2e5;
    margin: 0;
    padding: 6px 13px;
}
table tr th:first-child,
table tr td:first-child {
    margin-top: 0;
}
table tr th:last-child,
table tr td:last-child {
    margin-bottom: 0;
}

.CodeMirror-lines {
    padding-left: 4px;
}

.code-tooltip {
    box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);
    border-top: 1px solid #eef2f2;
}

.md-fences,
code,
tt {
    border: 1px solid #e7eaed;
    background-color: #f8f8f8;
    border-radius: 3px;
    padding: 0;
    padding: 2px 4px 0px 4px;
    font-size: 0.9em;
}

code {
    background-color: #f3f4f4;
    padding: 0 2px 0 2px;
}

.md-fences {
    margin-bottom: 15px;
    margin-top: 15px;
    padding-top: 8px;
    padding-bottom: 6px;
}


.md-task-list-item > input {
  margin-left: -1.3em;
}

@media print {
    html {
        font-size: 13px;
    }
    table,
    pre {
        page-break-inside: avoid;
    }
    pre {
        word-wrap: break-word;
    }
}

.md-fences {
	background-color: #f8f8f8;
}
#write pre.md-meta-block {
	padding: 1rem;
    font-size: 85%;
    line-height: 1.45;
    background-color: #f7f7f7;
    border: 0;
    border-radius: 3px;
    color: #777777;
    margin-top: 0 !important;
}

.mathjax-block>.code-tooltip {
	bottom: .375rem;
}

.md-mathjax-midline {
    background: #fafafa;
}

#write>h3.md-focus:before{
	left: -1.5625rem;
	top: .375rem;
}
#write>h4.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h5.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
#write>h6.md-focus:before{
	left: -1.5625rem;
	top: .285714286rem;
}
.md-image>.md-meta {
    /*border: 1px solid #ddd;*/
    border-radius: 3px;
    padding: 2px 0px 0px 4px;
    font-size: 0.9em;
    color: inherit;
}

.md-tag {
    color: #a7a7a7;
    opacity: 1;
}

.md-toc { 
    margin-top:20px;
    padding-bottom:20px;
}

.sidebar-tabs {
    border-bottom: none;
}

#typora-quick-open {
    border: 1px solid #ddd;
    background-color: #f8f8f8;
}

#typora-quick-open-item {
    background-color: #FAFAFA;
    border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;
    border-style: solid;
    border-width: 1px;
}

/** focus mode */
.on-focus-mode blockquote {
    border-left-color: rgba(85, 85, 85, 0.12);
}

header, .context-menu, .megamenu-content, footer{
    font-family: "Segoe UI", "Arial", sans-serif;
}

.file-node-content:hover .file-node-icon,
.file-node-content:hover .file-node-open-state{
    visibility: visible;
}

.mac-seamless-mode #typora-sidebar {
    background-color: #fafafa;
    background-color: var(--side-bar-bg-color);
}

.md-lang {
    color: #b4654d;
}

.html-for-mac .context-menu {
    --item-hover-bg-color: #E6F0FE;
}

#md-notification .btn {
    border: 0;
}

.dropdown-menu .divider {
    border-color: #e5e5e5;
}

.ty-preferences .window-content {
    background-color: #fafafa;
}

.ty-preferences .nav-group-item.active {
    color: white;
    background: #999;
}


</style>
</head>
<body class='typora-export os-windows' >
<div  id='write'  class = 'is-node'><h1><a name="web用户面板" class="md-header-anchor"></a><span>Web用户面板</span></h1><h2><a name="1开发工具" class="md-header-anchor"></a><span>1.开发工具</span></h2><ul><li><span>Visual Studio Code </span>&emsp;<a href='https://code.visualstudio.com/' target='_blank' class='url'>https://code.visualstudio.com/</a></li><li><span>WebStorm </span>&emsp;<a href='https://www.jetbrains.com/webstorm/' target='_blank' class='url'>https://www.jetbrains.com/webstorm/</a></li></ul><h2><a name="2测试工具" class="md-header-anchor"></a><span>2.测试工具</span></h2><ul><li><span>浏览器</span></li></ul><ol start='' ><li><span>Microsoft Edge</span></li><li><span>Internet Explorer</span></li><li><span>Google Chrome</span></li><li><span>Mozilla FireFox</span></li><li><span>Apple Safari</span></li><li><span>.......</span></li></ol><h2><a name="3推荐网站" class="md-header-anchor"></a><span>3.推荐网站</span></h2><ul><li><span>MDN </span>&emsp;<a href='https://developer.mozilla.org/zh-CN/' target='_blank' class='url'>https://developer.mozilla.org/zh-CN/</a></li><li><span>菜鸟教程 </span>&emsp;<a href='http://www.runoob.com/' target='_blank' class='url'>http://www.runoob.com/</a></li><li><span>W3school </span>&emsp;<a href='http://www.w3school.com.cn/' target='_blank' class='url'>http://www.w3school.com.cn/</a></li></ul><h2><a name="4vs-code常用快捷键与扩展" class="md-header-anchor"></a><span>4.Vs code常用快捷键与扩展</span></h2><ul><li><span>Ctrl + s   保存</span></li><li><span>Ctrl + z   撤销</span></li><li><span>Ctrl + y   恢复</span></li><li><span>Ctrl + c   复制</span></li><li><span>Ctrl + v   粘贴 </span></li><li><span>Ctrl + x   剪切</span></li><li><span>Ctrl + /   注释切换</span></li><li><span>Shift + Alt + f  格式化代码</span></li><li><span>Tab  Emmet切换</span></li><li><span>Alt + B   打开浏览器</span></li><li><span>HTML CSS Support</span></li><li><span>Prettier - Code formatter或者 Beautify css/sass/scss/less</span></li><li><span>Path lntellisense</span></li></ul><h2><a name="5在浏览器chrome中查看调试网页" class="md-header-anchor"></a><span>5.在浏览器Chrome中查看调试网页</span></h2><ul><li><span>Elements  元素面板 -&gt; html+css</span></li><li><span>Console 控制台面板 -&gt; js</span></li><li><span>Sources 源代码面板 -&gt; js</span></li><li><span>Network 网络面板 -&gt; 网络请求</span></li><li><span>Performance 性能面板 -&gt; 性能调优</span></li><li><span>Memory 内存面板 -&gt; 性能调优</span></li><li><span>Application 应用面板 -&gt; 性能调优</span></li><li><span>Security 安全面板 -&gt; 安全防御</span></li></ul><ul><li><span>Audits 审计面板 -&gt; 自动化测试</span></li></ul><h2><a name="6关于readmemd" class="md-header-anchor"></a><span>6.关于README.md</span></h2><ul><li><span>Markdown 是一种轻量级标记语言，它允许人们使用易读易写的纯文本格式编写文档。</span></li><li><span>Markdown 语言在 2004 由约翰·格鲁伯（英语：John Gruber）创建。</span></li><li><span>Markdown 编写的文档可以导出 HTML 、Word、图像、PDF、Epub 等多种格式的文档。</span></li><li><span>Markdown 编写的文档后缀为 .md, .markdown。</span></li></ul><h2><a name="7html语言概述" class="md-header-anchor"></a><span>7.HTML语言概述</span></h2><h3><a name="什么是htmkl" class="md-header-anchor"></a><span>什么是HTMKL?</span></h3><ol start='' ><li><span>HTML 是用来描述网页的一种语言。</span></li><li><span>HTML指的是超文本标记语言:HyperText Markup Language。</span></li><li><span>HTML不是一种编程语言，而是一种标记语言。标记语言是一套标记标签(markup tag)。</span></li><li><span>HTML使用标记标签来描述网页。</span></li><li><span>HTML文档包含了HTML标签及文本内容。</span></li></ol><h3><a name="html标签" class="md-header-anchor"></a><span>HTML标签</span></h3><ol start='' ><li><span>HTML标记标签通常被称为HTML标签(HTML tag)。</span></li><li><span>HTML标签是由尖括号包围的关键词，比如</span>&lt;<span>html&gt;。</span></li><li><span>HTML标签通常是成对出现的，比如</span>&lt;<span>b</span>&gt;<span>和</span>&lt;<span>/b&gt;。</span></li><li><span>开始和结束标签也被称为开放标签和闭合标签。</span></li><li><span>标签对中的第一个标签是开始标签，第二个是结束标签。</span></li><li><span>HTML标签也存在一些单标签，比如</span>&lt;<span>img/&gt;。</span></li></ol><h3><a name="html默认搜索页" class="md-header-anchor"></a><span>HTML默认搜索页</span></h3><ul><li><span>index.html</span></li><li><span>index.css</span></li><li><span>index.php</span></li><li><span>index.jsp</span></li></ul><h3><a name="html的head部分" class="md-header-anchor"></a><span>HTML的head部分</span></h3><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;head&gt;  定义了文档信息</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;title&gt; 定义了文档信息</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;bade&gt;  定义了页面链接标签的默认链接地址</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;link&gt;  定义了一个文档和外部资源之间的关系</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;meta&gt;  定义了HTML文档中的元数据</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;script&gt;定义了HTML文档的样式</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 138px;"></div><div class="CodeMirror-gutters" style="display: none; height: 138px;"></div></div></div></pre><h3><a name="html的body部分" class="md-header-anchor"></a><span>HTML的body部分</span></h3><ol start='' ><li><span>内容分区元素</span></li></ol><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;h1&gt;,&lt;h2&gt;,&lt;h3&gt;,&lt;h4&gt;,&lt;h5&gt;,&lt;h6&gt;</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 23px;"></div><div class="CodeMirror-gutters" style="display: none; height: 23px;"></div></div></div></pre><ol start='2' ><li><span>文本内容元素</span></li></ol><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><span><span>​</span>x</span></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;div&gt;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;p&gt;, &lt;pre&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;ul&gt;, &lt;li&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;ol&gt; ,&lt;li&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;dl&gt;, &lt;dt&gt;,&lt;dd&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;hr&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;blockquote&gt;</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 299px;"></div><div class="CodeMirror-gutters" style="display: none; height: 299px;"></div></div></div></pre><ol start='3' ><li><span>内联文本元素</span></li></ol><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;span&gt;</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;br&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;b&gt;, &lt;strong&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;i&gt;, &lt;em&gt;</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;a&gt;</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 207px;"></div><div class="CodeMirror-gutters" style="display: none; height: 207px;"></div></div></div></pre><ol start='4' ><li><span>图片元素</span></li></ol><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;img&gt;</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 23px;"></div><div class="CodeMirror-gutters" style="display: none; height: 23px;"></div></div></div></pre><ol start='5' ><li><span>内嵌内容元素</span></li></ol><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;iframe&gt;</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 23px;"></div><div class="CodeMirror-gutters" style="display: none; height: 23px;"></div></div></div></pre><h3><a name="html数据呈现------表格" class="md-header-anchor"></a><span>HTML数据呈现——表格</span></h3><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">元素<span class="cm-tab" role="presentation" cm-text="	">  </span> &nbsp;  描述</span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;table&gt;<span class="cm-tab" role="presentation" cm-text="	"> </span> &nbsp;  表示表格数据 — 即通过二维数据表表示的信息。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;tr&gt;<span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp;  定义表格中的行。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;td&gt;<span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp;  定义了一个包含数据的表格单元格。属性：colspan rowspan</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;caption&gt;<span class="cm-tab" role="presentation" cm-text="	">   </span>展示一个表格的标题， 它常常作为 &lt;table&gt; 的第一个子元素出现，同时显示在表格内容的最前面，但是，它同样可以被CSS样式化，所以，它同样可以出现在任何一个一个相对于表格的做任意位置。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;thead&gt;<span class="cm-tab" role="presentation" cm-text="	"> </span> &nbsp;  定义了一组定义表格的列头的行。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;tbody&gt;<span class="cm-tab" role="presentation" cm-text="	"> </span> &nbsp;  封装了一组表行，表示它们包含表的主体</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;tfoot&gt;<span class="cm-tab" role="presentation" cm-text="	"> </span> &nbsp;  定义了一组表格中各列的汇总行。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;th&gt;<span class="cm-tab" role="presentation" cm-text="	">    </span> &nbsp;  定义表格内的表头单元格。属性：colspan rowspan</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;colgroup&gt;<span class="cm-tab" role="presentation" cm-text="	">  </span>表格列组 标签用来定义表中的一组列表。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;col&gt;<span class="cm-tab" role="presentation" cm-text="	">   </span> &nbsp;  定义表格中的列，并用于定义所有公共单元格上的公共语义。它通常位于</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;colgroup&gt;  元素内。</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 552px;"></div><div class="CodeMirror-gutters" style="display: none; height: 552px;"></div></div></div></pre><h3><a name="html数据交互------表单" class="md-header-anchor"></a><span>HTML数据交互——表单</span></h3><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" style="break-inside: unset;"><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation" style=""><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"> </span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">元素 &nbsp; &nbsp; &nbsp;  描述</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;form&gt;<span class="cm-tab" role="presentation" cm-text="	">  </span> &nbsp;  表示了文档中的一个区域，此区域包含有交互控制元件，用来向 Web 服务器提交信息。 </span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;fieldset&gt; 用来对表单中的控制元素进行分组。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;legend&gt;<span class="cm-tab" role="presentation" cm-text="	">    </span>代表一个用于表示它的父元素&lt;fieldset&gt;的内容的标题。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;label&gt; &nbsp;  表示用户界面中某个元素的说明。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;input&gt; &nbsp; &nbsp; 用于为基于Web的表单创建交互式控件，以便接受来自用户的数据; 可以使用各种类型的输入数据和控件小部件，具体取决于设备和user agent。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;select&gt;<span class="cm-tab" role="presentation" cm-text="	">    </span>表示一个控件，提供一个选项菜单。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;option&gt; &nbsp;  用于定义在&lt;select&gt;,&lt;optgroup&gt;元素中包含的项。&lt;option&gt; 可以在弹出窗口和 html 文档中的其他项目列表中表示菜单项。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;optgroup&gt;  创建包含在一个 &lt;select&gt; 元素中的一组选项。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;textarea&gt;  表示一个多行纯文本编辑控件。</span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span cm-text="">​</span></span></pre><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;button&gt; &nbsp;  表示一个可点击的按钮，可以用在表单或文档其它需要使用简单标准按钮的地方。</span></pre></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 575px;"></div><div class="CodeMirror-gutters" style="display: none; height: 575px;"></div></div></div></pre><h3><a name="html语义化" class="md-header-anchor"></a><span>HTML语义化 </span></h3><ol start='' ><li><span>HTML语义化(Semantic)背景</span></li></ol><blockquote><p><span>随着互联网的发展，WEB也承载越来越多的信息（图片，声音，视频等），人们开始用机器来处理网络信息，就此诞生了搜索引擎。如次庞大及复杂的信息如何让搜索引擎处理和挖掘，所以让机器能够更好地读懂WEB上内容就变得越来越重要。</span></p></blockquote><ol start='2' ><li><span>什么是语义化?</span></li></ol><blockquote><p><span>通俗的来讲就是从代码上来展示页面的结构，而不是从最终视觉上来展示结构，在去掉或样式丢失的时候依然能让页面呈现清晰的结构。</span></p></blockquote><ol start='3' ><li><span>为什么要使用语义化标签?</span></li></ol><blockquote><p><span>1.清晰的页面结构。去掉或样式丢失的时候,也能让页面呈现清晰的结构，增强页面的可读性。</span></p></blockquote><blockquote><p><span>2.有利于 seo 优化,利于被搜索引擎收录(更便于搜索引擎的爬虫程序来识别)。利于SEO，语义化能和搜索引擎建立良好的联系，有利于爬虫抓取更多的有效信息。爬虫依赖于标签来确定上下文和各个关键字的权重。</span></p></blockquote><blockquote><p><span>3.方便其他设备解析（如屏幕阅读器、盲人阅读器、移动设备）以语义的方式来渲染网页。PDA、手机等设备可能无法像普通电脑的浏览器一样来渲染网页(通常是因为这些设备对 CSS的支持较弱),使用语义标记可以确保这些设备以一种有意义的方式来渲染网页.理想情况下,观看设备的任务是符合设备本身的条件来渲染网页。</span></p></blockquote><blockquote><p><span>4.便于团队开发和维护。W3C 给我们定了一个很好的标准,在团队中大家都遵循这个标准,可以减少很多差异化的东西,方便开发和维护,提高开发效率,甚至实现模块化开发。</span></p></blockquote><h3><a name="html标签-n181" class="md-header-anchor"></a><span>HTML标签</span></h3><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;header&gt;  &lt;nav&gt; &lt;footer&gt;  &lt;article&gt; &lt;aside&gt; &lt;section&gt; &lt;address&gt; &lt;main&gt;</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 23px;"></div><div class="CodeMirror-gutters" style="display: none; height: 23px;"></div></div></div></pre><pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang=""><div class="CodeMirror cm-s-inner CodeMirror-wrap" lang=""><div style="overflow: hidden; position: relative; width: 3px; height: 0px; top: 0px; left: 8px;"><textarea autocorrect="off" autocapitalize="off" spellcheck="false" tabindex="0" style="position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;"></textarea></div><div class="CodeMirror-scrollbar-filler" cm-not-content="true"></div><div class="CodeMirror-gutter-filler" cm-not-content="true"></div><div class="CodeMirror-scroll" tabindex="-1"><div class="CodeMirror-sizer" style="margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;"><div style="position: relative; top: 0px;"><div class="CodeMirror-lines" role="presentation"><div role="presentation" style="position: relative; outline: none;"><div class="CodeMirror-measure"><pre><span>xxxxxxxxxx</span></pre></div><div class="CodeMirror-measure"></div><div style="position: relative; z-index: 1;"></div><div class="CodeMirror-code" role="presentation"><div class="CodeMirror-activeline" style="position: relative;"><div class="CodeMirror-activeline-background CodeMirror-linebackground"></div><div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: 0px; width: 0px;"></div><pre class=" CodeMirror-line " role="presentation"><span role="presentation" style="padding-right: 0.1px;">&lt;abbr&gt; &lt;dfn&gt; &lt;mark&gt; &lt;code&gt; &lt;small&gt; &lt;input&gt;  新类型</span></pre></div></div></div></div></div></div><div style="position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 23px;"></div><div class="CodeMirror-gutters" style="display: none; height: 23px;"></div></div></div></pre><h3><a name="html属性" class="md-header-anchor"></a><span>HTML属性</span></h3><ul><li><span>常见属性：title  href  src  name  id  class value checked  disabled  </span></li><li><span>HTML属性参考 --&gt;</span><a href='https://developer.mozilla.org/zh-CN/docs/Web/HTML/Attributes'><span>传送门</span></a></li></ul><h3><a name="html颜色" class="md-header-anchor"></a><span>HTML颜色</span></h3><ul><li><span>颜色由红(R)、绿(G)、蓝(B)组成。</span></li><li><span>使用颜色名</span>
<img src="https://p.ananas.chaoxing.com/star3/origin/e25e13bb33a6193e074a3c31e7f32266.png" referrerpolicy="no-referrer"></li><li><span>使用颜色值</span>
<img src="https://p.ananas.chaoxing.com/star3/origin/e25e13bb33a6193e074a3c31e7f32266.png" referrerpolicy="no-referrer"></li></ul><h3><a name="html其它" class="md-header-anchor"></a><span>HTML其它</span></h3><ul><li><p><span>访问路径：绝对路径   相对路径</span></p></li><li><p><span>图像格式：PNG   JPG  SVG  GIF  BMP  ICO</span></p></li><li><p><span>字符实体：例如：&amp;nbsp；    &amp;copy；  &amp;reg；  &amp;lt； &amp;gt；完整列表：--&gt;</span><a href='https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references'><span>传送门</span></a><span> </span></p></li><li><p><span>不建议使用</span><br></p><ul><li><span>标签，例如：center  font  marquee  等</span></li><li><span>属性，例如：border color bgcolor  width  height align 等</span></li></ul></li></ul><h2><a name="8css概述" class="md-header-anchor"></a><span>8.CSS概述</span></h2><h3><a name="css用来干什么的" class="md-header-anchor"></a><span>CSS用来干什么的？</span></h3><blockquote><p><span>CSS 是用来指定文档如何展示给用户的一门语言——如网页的样式、布局等。通过CSS实际上是将文档变成用户可用的文件，将文档在电脑屏幕、投影仪或打印机等设备上进行可视化展示。</span></p></blockquote><h3><a name="css的渲染" class="md-header-anchor"></a><span>CSS的渲染</span></h3><p><img src="https://p.ananas.chaoxing.com/star3/origin/3b38172a8cbdf8ddbb9f83580e7df8da.png" referrerpolicy="no-referrer"></p><h4><a name="基本语法" class="md-header-anchor"></a><span>基本语法</span></h4><p><img src="https://p.ananas.chaoxing.com/star3/origin/5e758fed3608dee5f1e35318312ad792.png" referrerpolicy="no-referrer"></p><ul><li><span>语法由一个 选择器(selector)起头。 它选择(selects) 了将要用来添加样式的 HTML 元素。 接着是一对大括号{ }。 在大括号内部定义一个或多个形式为 属性(property):值(value); 的 声明，冒号之前是属性，冒号之后是值。不同的 CSS 属性(properties) 对应不同的合法值。</span></li><li><span>例如，上图中指定了 color 属性，可以设置所需颜色值；还有 font-size 属性，设置了字的尺寸。一个 CSS 样式表可以包含很多个规则。</span></li></ul><h3><a name="css注释" class="md-header-anchor"></a><span>CSS注释</span></h3><ul><li><span>注释是用来解释你的代码，并且可以随意编辑它，浏览器会忽略它。</span></li><li><span>注释以&quot;/</span><span>*</span><span>&quot;开始，以&quot;</span><span>*</span><span>/&quot;结束</span></li></ul><h3><a name="应用css的三种方法" class="md-header-anchor"></a><span>应用CSS的三种方法</span></h3><ul><li><span>外部样式表</span><font color=red><span>link</span></font><span>标签</span></li><li><span>内部样式表</span><font color=red><span>style</span></font><span>标签</span></li><li><span>内联样式表</span><font color=red><span>style</span></font><span>属性</span></li><li><font color=red><span>优先级：</span></font><span>内联样式（Inline style） &gt; 内部样式（Internal style sheet） &gt;外部样式（External style sheet） &gt; 浏览器默认样式</span></li></ul><h3><a name="css层叠与继承" class="md-header-anchor"></a><span>CSS层叠与继承</span></h3><h4><a name="冲突" class="md-header-anchor"></a><span>冲突</span></h4><ul><li><span>CSS中会出现规则“</span><strong><span>冲突</span></strong><span>”，通过“</span><strong><span>继承</span></strong><span>”与“层叠”解决冲突规则的适应问题</span></li></ul><h4><a name="继承" class="md-header-anchor"></a><span>继承</span></h4><ul><li><span>继承也需要在上下文中去理解 —— 一些设置在父元素上的css属性是可以被子元素继承的，有些则不能。</span></li><li><span>例如：</span></li></ul><ol start='' ><li><span>设置一个元素的 color 和 font-family ，每个在里面的元素也都会有相同的属性，除非直接在元素上设置属性。</span></li><li><span>一些属性是不能继承的 — 举个例子如果你在一个元素上设置 width 50% ，所有的后代不会是父元素的宽度的50% 。</span></li></ol><h4><a name="层叠" class="md-header-anchor"></a><span>层叠</span></h4><ol start='' ><li><strong><span>资源顺序</span></strong></li></ol><ul><li><span>顺序对于层叠的非常重要。如果有超过一条规则，而且都是相同的权重，那么最后面的规则会应用。可以理解为后面的规则覆盖前面的规则，直到最后一个开始设置样式。</span></li></ul><ol start='2' ><li><strong><span>优先级</span></strong></li></ol><ul><li><p><span>“优先级”重要性高于“资源顺序”，这样会发现在一些情况下，有些规则在最后出现，但是却应用了前面的规则。</span></p></li><li><p><span>一个选择器的优先级可以说是由四个部分相加 (分量)，可以认为是个十百千 — 四位数的四个位数：</span></p><ol start='' ><li><span>千位： 如果声明在 style 的属性（内联样式）则该位得一分。这样的声明没有选择器，所以它得分总是1000。</span></li><li><span>百位： 选择器中包含ID选择器则该位得一分。</span></li><li><span>十位： 选择器中包含类选择器、属性选择器或者伪类则该位得一分。</span></li><li><span>个位：选择器中包含元素、伪元素选择器则该位得一分。</span>
<img src="https://p.ananas.chaoxing.com/star3/origin/2541cecff037d712742b23c17057f857.png" referrerpolicy="no-referrer"></li></ol></li></ul><ol start='3' ><li><strong><span>重要(!important)</span></strong></li></ol><ul><li><span>有一个特殊的 CSS 可以用来覆盖所有上面所有优先级计算，不过需要很小心的使用 — !important。用于修改特定属性的值， 能够覆盖普通规则的层叠。</span></li></ul><h3><a name="css选择器" class="md-header-anchor"></a><span>CSS选择器</span></h3><h4><a name="通用选择器" class="md-header-anchor"></a><span>通用选择器</span></h4><ul><li><span>表示所有元素</span></li></ul><center class="half">
    <img src="https://p.ananas.chaoxing.com/star3/origin/b8dcbdf97fc98fd417ef2f1755d3bf4b.png" width="200" height="100">
    <img src="https://p.ananas.chaoxing.com/star3/origin/0e3adbfcc82bf1f589619f788968bcc4.png" width="200" height="100">
</center><h4><a name="类选择器" class="md-header-anchor"></a><span>类选择器</span></h4><ul><li><p><span>ID选择器</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/17c94185eb68d6948bdd2d5ff821de77.png" referrerpolicy="no-referrer"></p></li><li><p><span>类选择器 </span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/53937817b246ceef29484d48075705a9.png" referrerpolicy="no-referrer"></p></li><li><p><span>元素选择器</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/c56e9ae61d3f4958219bc09d3b74c208.png" referrerpolicy="no-referrer"></p></li></ul><h4><a name="属性选择器" class="md-header-anchor"></a><span>属性选择器</span></h4><p><img src="https://p.ananas.chaoxing.com/star3/origin/e9b5a2efd8d2405e9b6e69431e9bc565.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/4c509eeb725a814d1837cf3e40ca0b8c.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/134e966be94bf6546232f40e38ba1da4.png" referrerpolicy="no-referrer"></p><p><span> </span><img src="https://p.ananas.chaoxing.com/star3/origin/3d2fc069fcb0d642964b4e31a3783488.png" referrerpolicy="no-referrer"></p><h4><a name="伪类选择器" class="md-header-anchor"></a><span>伪类选择器</span></h4><ul><li><p><span>伪类</span>
<img src="https://p.ananas.chaoxing.com/star3/origin/eac88de243030ebf5e0f6662d43e3e8a.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/061f76f4c5317df03afae5878f3adba9.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/50e38b637809413d48ea2cce30cbe098.png" referrerpolicy="no-referrer"></p></li><li><p><span>伪元素</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/eefa3843beb6e1cf02c1d091cf7a6d0b.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/3317829cfae4a9e1ac8fa7da044b90c8.png" referrerpolicy="no-referrer">
<img src="https://p.ananas.chaoxing.com/star3/origin/f2ed036e03fbe752f624b992f1ccba62.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/0c23dce3baca233369347611215c20bd.png" referrerpolicy="no-referrer">
<img src="https://p.ananas.chaoxing.com/star3/origin/efa4b26fdfe86e60315b60ec32f8d438.png" referrerpolicy="no-referrer"></p></li></ul><h4><a name="组合选择器" class="md-header-anchor"></a><span>组合选择器</span></h4><ul><li><p><span>后代选择器(以空格分隔)</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/71c90ccd7f45a8ae167a6b8e6dcded9e.png" referrerpolicy="no-referrer"></p></li><li><p><span>子元素选择器(以大于号分隔)</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/438ed0c4da4edbf81a20f2baed0b9921.png" referrerpolicy="no-referrer"></p></li><li><p><span>相邻兄弟选择器(以加号分隔)</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/f2417875baba411b01a5d6bbbc52fb2a.png" referrerpolicy="no-referrer"></p></li><li><p><span>普通兄弟选择器(以波浪线分隔)</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/12e703a902dc6dca604a3063cd858fef.png" referrerpolicy="no-referrer"></p></li></ul><h2><a name="9css盒子模型box-model" class="md-header-anchor"></a><span>9.CSS盒子模型(Box Model)</span></h2><h3><a name="块级盒子与内联盒子" class="md-header-anchor"></a><span>块级盒子与内联盒子</span></h3><ul><li><strong><span>在 CSS 中，所有的元素都被一个个的“盒子（box）”包围着，理解这些“盒子”的基本原理，是使用CSS实现准确布局、处理元素排列的关键。</span></strong></li><li><strong><span>在 CSS 中被广泛地使用两种“盒子” —— 块级盒子 (block box) 和 内联盒子 (inline box)。这两种盒子会在页面流（Page Flow）和元素之间的关系方面表现出不同的行为:</span></strong></li></ul><ol start='' ><li><p><strong><span>块级盒子(Block box)</span></strong></p><ul><li><span>盒子会在内联的方向上扩展并占据父容器在该方向上的所有可用空间，在绝大数情况下意味着盒子会和父容器一样宽</span></li><li><span>每个盒子都会换行</span></li><li><span>width 和 height 属性起作用</span></li><li><span>内边距（padding）, 外边距（margin） 和 边框（border） 会将其他元素从当前盒子周围“推开”</span></li><li><span>div、h1、p、pre等默认情况下都是块级的盒子</span></li></ul></li><li><p><strong><span>内联盒子</span></strong></p><ul><li><span>盒子不会产生换行。</span></li><li><span>width 和 height 属性将不起作用。</span></li><li><span>内边距、外边距以及边框会被应用。</span></li><li><span>span、 a 都是默认情况下都是内联的盒子</span></li></ul></li></ol><ul><li><strong><span>通过对盒子display 属性的设置，比如 inline 或者 block ，来改变盒子的显示。</span></strong></li></ul><ol start='3' ><li><p><strong><span>在内联和块之间提供了一个中间状态  display: inline-block</span></strong></p><ul><li><span>设置width 和height 属性会生效。</span></li><li><span>padding, margin, 以及border 会推开其他元素。</span></li><li><span>不会跳转到新行</span></li></ul></li></ol><h3><a name="盒子模型" class="md-header-anchor"></a><span>盒子模型</span></h3><ul><li><span>完整的 CSS 盒模型应用于块级盒子，内联盒子只使用盒模型中定义的部分内容。模型定义了盒的每个部分 —— margin, border, padding, content —— 合在一起就可以创建在页面上看到的内容。</span></li></ul><ol start='' ><li><p><strong><span>CSS中块级盒子</span></strong></p><ul><li><span>Content(内容) Box: 这个区域是用来显示内容，大小可以通过设置 width 和 height。</span></li><li><span>Border(边框) Box: 边框盒包裹内容和内边距。大小通过 border 相关属性设置。</span></li><li><span>Margin(外边距) Box: 这是最外面的区域，是盒子和其他元素之间的空白区域。大小通过 margin 相关属性设置。</span></li></ul></li></ol><center class="half">
    <img src="https://p.ananas.chaoxing.com/star3/origin/cd5308706a7f60997862be1ca2520bc5.png">
</center><ol start='2' ><li><p><strong><span>标准盒子模型</span></strong></p><ul><li><p><span>在标准模型中，设置 width 和 height，实际设置的是 content box。padding 和 border 再加上设置的宽高一起决定整个盒子的大小。</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/dd6bdee7d5cf8c9db744dd7e9524a5c5.png" referrerpolicy="no-referrer"></p></li><li><p><span>标准盒子大小为宽度410px = 350 + 25 + 25 + 5 + 5，高度210px = 150 + 25 + 25 + 5 + 5</span></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/46149b9f71fde909c254794fbdf1bdd9.png" referrerpolicy="no-referrer"></p><ul><li><span>margin 不计入实际大小。当然，它会影响盒子在页面所占空间，但是影响的是盒子外部空间。</span></li></ul></li></ul></li></ol><h3><a name="盒子模型的各个部分" class="md-header-anchor"></a><span>盒子模型的各个部分</span></h3><h4><a name="尺寸" class="md-header-anchor"></a><span>尺寸</span></h4><ul><li><span>width</span></li><li><span>max-width</span></li><li><span>min-width</span></li><li><span>height</span></li><li><span>max-height</span></li><li><span>min-height</span></li></ul><h4><a name="margin------外边距" class="md-header-anchor"></a><span>margin——外边距</span></h4><ol start='' ><li><strong><span>margin</span></strong></li></ol><ul><li><span>margin属性为给定元素设置所有四个（上下左右）方向的外边距属性。这是四个外边距属性设置的简写。</span></li><li><span>四个外边距属性设置分别是： margin-top， margin-right， margin-bottom 和 margin-left 。</span></li><li><span>指定的外边距允许为负数。</span></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/66754d7b54c80d9f8d6d3a123027a5f1.png" referrerpolicy="no-referrer"></p><ul><li><span>使用 margin: 0 auto 水平居中</span></li></ul><ol start='2' ><li><strong><span>合并外边距</span></strong></li></ol><ul><li><span>当块级元素（block）的上外边距(margin-top)和下外边距(margin-bottom)同时都有设定时只会只会保留最大边距，这种行为称为边界折叠（margin collapsing）。</span></li></ul><h4><a name="border------外边框" class="md-header-anchor"></a><span>border——外边框</span></h4><ul><li><span>border属性是一个用于设置各种单独的边界属性的简写属性。border可以用于设置一个或多个以下属性的值： border-width, border-style, border-color。</span></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/f152feffa5a6018e700bf68b6b6959c6.png" referrerpolicy="no-referrer"></p><ul><li><p><span>可以使用border属性一次设置所有四个边框的宽度、颜色和样式。</span></p></li><li><p><span>分别设置每边的宽度、颜色和样式，可以使用：</span></p><ul><li><span>border-top</span></li><li><span>border-right</span></li><li><span>border-bottom</span></li><li><span>border-left</span></li></ul></li><li><p><span>设置所有边的颜色、样式或宽度，请使用以下属性：</span></p><ul><li><span>border-width</span></li><li><span>border-width</span></li><li><span>border-color</span></li></ul></li><li><p><span>设置单边的颜色、样式或宽度，可以使用最细粒度的普通属性之一：</span></p><ul><li><span>border-top-width    </span></li><li><span>border-top-style</span></li><li><span>border-top-color</span></li><li><span>border-right-width</span></li><li><span>border-right-style</span></li><li><span>border-right-color</span></li><li><span>border-bottom-width</span></li><li><span>border-bottom-style</span></li><li><span>border-bottom-color</span></li><li><span>border-left-width</span></li><li><span>border-left-style</span></li><li><span>border-left-color</span></li></ul></li></ul><h4><a name="padding------内边距" class="md-header-anchor"></a><span>padding——内边距</span></h4><ul><li><span>padding属性设置一个元素的内边距，padding 区域指一个元素的内容和其边界之间的空间，该属性不能为负值。</span></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/728938322c908852b1751e9fea0d74a5.png" referrerpolicy="no-referrer"></p><ul><li><span>padding-bottom</span></li><li><span>padding-left</span></li><li><span>padding-right</span></li><li><span>padding-top</span></li></ul><h3><a name="内容溢出" class="md-header-anchor"></a><span>内容溢出</span></h3><ul><li><span>CSS中万物皆盒，可以通过给width和height赋值的方式来约束盒子的尺寸。但当盒子里面塞太多东西的时候会发生溢出。CSS就不会隐藏溢出的内容，因为隐藏引起的“数据损失”通常会造成困扰。</span></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/a05d1e4d4fefaa240f6fdfc1e8eb88be.png" referrerpolicy="no-referrer"></p><ul><li><span>CSS属性 overflow 定义当一个元素的内容太大而无法适应 块级格式化上下文 时候该做什么。它是 overflow-x 和overflow-y的 简写属性 。</span></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/1711372acd569ee9b4425db32189c66c.png" referrerpolicy="no-referrer"></p><h3><a name="定位" class="md-header-anchor"></a><span>定位</span></h3><blockquote><p><span>默认情况下，块级元素在视口中垂直布局——每个都将显示在上一个元素下面的新行上，并且它们的外边距将分隔开它们。</span></p></blockquote><blockquote><p><span>内联元素互相之间以及任何相邻（或被包裹）的文本内容位于同一行上，只要在父块级元素的宽度内有空间可以这样做。如果没有空间，那么溢流的文本或元素将向下移动到新行。</span></p></blockquote><blockquote><p><span>定位是允许覆盖正常的基本文档流行为。例如，可以创建一个浮动在页面其他部分顶部的UI元素，并且/或者始终停留在浏览器窗口内的相同位置，无论页面滚动多少。要定义某个元素上的特定类型的定位，需要使用position属性。</span></p></blockquote><ol start='' ><li><p><strong><span>定位(position)</span></strong></p><ul><li><span>静态定位（static）：是每个元素获取的默认值——它只是意味着将元素放入它在文档布局流中的正常位置。</span></li><li><span>相对定位（relative）：相对定位元素的定位是相对其正常位置，移动相对定位元素，但它原本所占的空间不会改变。</span></li><li><span>相对定位（relative）：相对定位元素的定位是相对其正常位置，移动相对定位元素，但它原本所占的空间不会改变。</span></li><li><span>绝对定位（absolute）：绝对定位的元素的位置相对于最近的已定位父元素，如果元素没有已定位的父元素，那么它的位置相对于</span>&lt;<span>html</span>&gt;<span>。元素的位置与文档流无关，因此不占据空间。</span></li><li><span>粘贴定位（sticky）：基于用户的滚动位置来定位。元素定位表现为在跨越特定阈值前为相对定位，之后为固定定位。指定 top, right, bottom 或 left 四个阈值其中之一，才可使粘性定位生效。</span></li></ul></li></ol><ul><li><span>①元素可以使用的顶部（top），底部（bottom），左侧（left）和右侧（right）属性进行定位。</span></li><li><span>②使用虚拟的Z轴（z-index）重叠元素的性质。当元素之间重叠的时候， z-index 较大的元素会覆盖较小的元素在上层进行显示。默认情况下，定位的元素都具有z-index为auto，实际上为0。</span></li></ul><h3><a name="浮动" class="md-header-anchor"></a><span>浮动</span></h3><ol start='' ><li><strong><span>FLoat(浮动)</span></strong></li></ol><blockquote><p><span>使元素向左或向右移动，其周围的元素也会重新排列。使元素向左或向右移动，其周围的元素也会重新排列。</span></p></blockquote><ol start='2' ><li><p><strong><span>清除浮动</span></strong></p><ul><li><span>left：停止任何活动的左浮动</span></li><li><span>right：停止任何活动的右浮动</span></li><li><span>both：停止任何活动的左右浮动</span></li></ul></li></ol><h2><a name="10css常见样式属性" class="md-header-anchor"></a><span>10.CSS常见样式属性</span></h2><h3><a name="值与单位" class="md-header-anchor"></a><span>值与单位</span></h3><ol start='' ><li><strong><span>数字，长度与百分比</span></strong></li></ol><p><img src="https://p.ananas.chaoxing.com/star3/origin/dbdab8a9292582a24332f3b0f6737e76.png" referrerpolicy="no-referrer"></p><ul><li><p><span>长度</span></p><ul><li><span>CSS中有两种类型的长度——相对长度和绝对长度</span></li></ul></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/3fad43bed6b7054123c08787e1070f9d.png" referrerpolicy="no-referrer"></p><p><img src="https://p.ananas.chaoxing.com/star3/origin/6d76019c5b3cb623c245a5ccd0c65536.png" referrerpolicy="no-referrer"></p><ul><li><p><span>数字</span></p><ul><li><span>有些值接受数字，不添加任何单位。接受无单位数字的属性的一个例子是不透明度属性（opacity ），它控制元素的不透明度(它的透明程度)。此属性接受0(完全透明)和1(完全不透明)之间的数字。</span></li></ul></li></ul><ol start='2' ><li><strong><span>颜色</span></strong></li></ol><ul><li><span>颜色关键词</span></li><li><span>十六进制RGB值</span></li><li><span>RGB值</span></li></ul><ol start='3' ><li><strong><span>图片</span></strong></li></ol><ul><li><span>通过url()函数指向的实际图像文件</span></li></ul><ol start='4' ><li><strong><span>位置</span></strong></li></ol><ul><li><span>表示一组2D坐标，用于定位一个元素，如背景图像(通过 background-position)。它可以使用关键字(如 top, left, bottom, right, 以及center )将元素与2D框的特定边界对齐，以及表示框的顶部和左侧边缘偏移量的长度。</span></li></ul><ol start='5' ><li><strong><span>字符串和标识符</span></strong></li></ol><ul><li><span>关键字被用作值的地方(例如颜色关键字，如 red, black, rebeccapurple, and goldenrod)。这些关键字被更准确地描述为标识符，一个CSS可以理解的特殊值。因此它们没有使用引号括起来——它们不被当作字符串。</span></li></ul><ol start='6' ><li><strong><span>函数</span></strong></li></ol><ul><li><span>颜色部分看到了函数的作用——rgb()、hsl()等。用于从文件返回图像的值——url()——也是一个函数。calc()函数能够在CSS中进行简单的计算。</span></li></ul><h3><a name="字体样式" class="md-header-anchor"></a><span>字体样式</span></h3><ul><li><p><span>作用于字体的属性，会直接应用到文本中，比如使用哪种字体，字体的大小是怎样的，字体是粗体还是斜体，等等。</span></p><ul><li><span>font（字体）：font 属性可以用来作为 font-style, font-variant, font-weight, font-size, line-height 和 font-family 属性的简写，或将元素的字体设置为系统字体。</span></li><li><span>color（颜色）</span></li><li><span>font-family（字体种类）</span></li><li><span>font-size（字体大小）</span></li><li><span>font-style（字体样式）</span></li><li><span>font-weight（字体粗细）</span></li></ul></li></ul><h3><a name="文字样式" class="md-header-anchor"></a><span>文字样式</span></h3><ul><li><p><span>影响文本布局的属性</span></p><ul><li><span>text-align（文本对齐）</span></li><li><span>line-height（行高）</span></li><li><span>text-decoration（文本装饰）</span></li><li><span>text-indent（文本缩进）</span></li><li><span>letter-spacing（字母间距）</span></li><li><span>word-spacing（单词间距）</span></li></ul></li></ul><h3><a name="列表样式" class="md-header-anchor"></a><span>列表样式</span></h3><ul><li><p><span>列表样式</span></p><ul><li><span>list-style-type ：设置用于列表的项目符号的类型，例如无序列表的方形或圆形项目符号，或有序列表的数字，字母或罗马数字。</span></li><li><span>list-style-position ：设置在每个项目开始之前，项目符号是出现在列表项内，还是出现在其外。</span></li><li><span>list-style-image ：允许您为项目符号使用自定义图片，而不是简单的方形或圆形。</span></li><li><span>list-style：简写属性。属性值可以任意顺序排列，你可以设置一个，两个或者三个值（该属性的默认值为 disc, none, outside）。</span></li></ul></li></ul><h3><a name="背景样式" class="md-header-anchor"></a><span>背景样式</span></h3><ul><li><p><span>背景样式</span></p><ul><li><span>background-color（背景颜色）：定义了CSS中任何元素的背景颜色。属性接受任何有效的</span><color><span>值。背景色扩展到元素的内容和内边距的下面。</span></li><li><span>background-image（背景图片）：允许在元素的背景中显示图像。</span></li><li><span>background-repeat（背景平铺）：用于控制图像的平铺行为。</span></li><li><span>background-position（背景定位）：允许选择背景图像显示在其应用到的盒子中的位置。它使用的坐标系中，框的左上角是(0,0)，框沿着水平(x)和垂直(y)轴定位。</span></li><li><span>background-attachment（背景附加）：指定内容滚动时，背景滚动方式。</span></li><li><span>background（背景）：是一种 CSS 简写属性，用于一次性集中定义各种背景属性，包括 color, image, origin 与 size, repeat 方式等等。</span></li></ul></li></ul><h3><a name="表格样式" class="md-header-anchor"></a><span>表格样式</span></h3><ul><li><p><span>表格样式</span></p><ul><li><span>table-layout（布局）</span></li><li><span>border-collapse（间距）</span></li><li><span>border-spacing（相邻单元格边框之间的距离）</span></li><li><span>caption-side（标题位置）</span></li><li><span>empty-cells（无内容单元格）</span></li></ul></li></ul><h3><a name="表单样式" class="md-header-anchor"></a><span>表单样式</span></h3><ul><li><p><span>表单元素没有单独的样式属性，由于历史和技术的原因，表单元素不能很好地与CSS配合工作。可以分为三类：</span></p><ul><li><span>一类是跨平台下表现一致的的，例如：</span>&lt;<span>form&gt;</span>&lt;<span>fieldset&gt;</span>&lt;<span>label&gt;</span>&lt;<span>output&gt;以及文本字段（单行和多行）和按钮。</span></li><li><span>一类是跨平台下比较难取得一致表现的，需要更多的CSS技巧，例如：</span>&lt;<span>legend&gt;、</span>&lt;<span>checkbox&gt;和</span>&lt;<span>radio&gt;按钮。</span></li><li><span>一类是无法应用样式的，例如：所有高级用户界面小部件，如范围，颜色或日期控件; 和所有下拉小部件，包括</span>&lt;<span>select&gt;, </span>&lt;<span>option&gt;, </span>&lt;<span>optgroup&gt;和</span>&lt;<span>datalist&gt; 元素。</span></li></ul></li><li><p><span>表单重置</span></p></li></ul><p><img src="https://p.ananas.chaoxing.com/star3/origin/fa3ae7504396157c41aa38b49744bcff.png" referrerpolicy="no-referrer"></p><h2><a name="11css应用" class="md-header-anchor"></a><span>11.CSS应用</span></h2><h3><a name="样式重置css-reset" class="md-header-anchor"></a><span>样式重置(CSS Reset)</span></h3><ol start='' ><li><strong><span>Global White Space Reset</span></strong></li></ol><ul><li><p><span>{margin: 0;padding: 0}</span></p></li><li><p><span>Reset.css</span></p><ul><li><span>最先作者: Eric Meyer</span></li><li><span>目的: 在各浏览器达到统一的效果</span></li><li><span>链接: </span><a href='https://meyerweb.com/eric/tools/css/reset/'><span>https://meyerweb.com/eric/tools/css/reset/</span></a></li><li><span>YUI Reset: </span><a href='https://yuilibrary.com/yui/docs/cssreset/cssreset-basic-example.html'><span>https://yuilibrary.com/yui/docs/cssreset/cssreset-basic-example.html</span></a></li></ul></li><li><p><span>Normalize.css</span></p><ul><li><span>由Nicolas Gallagher和Jonathan Neal维护的一个CSS重置样式库，Bootstrap用的就是normalization.css。</span></li><li><span>很多人说reset.css太暴力了，normalize.css相对要温柔一些。normalize.css修复了不同浏览器常见的不一致，规范化常见的组件风格，保存有用的默认值。因此，选择用Normalize.css来取代其它的CSS Resets。</span></li><li><span>链接</span><a href='http://necolas.github.io/normalize.css'><span>http://necolas.github.io/normalize.css</span></a></li></ul></li></ul><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></div>
</body>
</html>